package com.gilstar.api;

/**
==========================================================================================================
<PRE>

==========================================================================================================

서버쪽 database 접속 시 참고사항
root@sicamp36201105:~# mysql -uusername -ppassword --default-character-set=utf8

이렇게 해야 서버쪽에 접속해서 콘솔에서 DB쿼리 작업할 때 한글 오류가 발생하지 않는다.

==========================================================================================================

################################gilstar api version 1.0###################################################

1. 모든 통신은 JSON Object로 통신합니다. 
2. 한글은 Hex String으로 전송합니다. Hex String으로 전송해야 하는 부분은 옆에 (Hex String)이라고 표기되어 있습니다.
3. 모든 응답은 ResultCode를 포함합니다. 0이 정상응답, -1이 비정상 응답입니다.

request json object example : {"req":"test"}

result json object exmaple : {"ResultCode":0, "ResultMessage":"[TEST OK]"}
==========================================================================================================
[접속 테스트]
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp
[REQUEST]
{
"req"					"test"	(Constant)
}
[RESPONSE]
정상 응답일 경우 : 
{"ResultCode":0, "ResultMessage":"[TEST OK]"}
등록 중 오류 발생 : 
{"ResultCode":-1, "ResultMessage":"응답 실패 오류 메세지 출력"}

==========================================================================================================
[길거리 공연 등록 1.]

길거리 공연등록은 총 2가지 로직으로 구성했습니다. 
길거리 공연 등록을 위한 필드값들을 json으로 전송합니다. 정상적으로 필드들이 들어갔다면, 서버에서는 
현재 등록된 공연의 시퀀스키값을 내려줍니다. 이 시퀀스 키값과 파일들을 multipart/form-data로 파일업로드 하시면 됩니다.   

==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]
{
"req"		:				"REGISTER_PERFORMANCE"	(Constant)
"title"		:				"공연 이름" (Hex String)
"artist"	:				"공연자" (Hex String)
"category"	:				"카테고리" ('music', 'performance', 'exhibition', 'others') 중 하나의 값이 들어와야 함. 값이 없으면 others로 들어감.
"latitude"	:				"위도" (소수점 정수값)
"longitude"	:				"경도" (소수점 정수값)
"date"		:				"날짜" (문자열 yyyy-MM-dd 타입 String)
"time"		:				"시간" (문자열 HH:MM 타입 String)
"content"	:				"공연 설명" (Hex String)
"email"		:				"email"	(String)
"sns_url" 	:				"SNS 주소"
"url_link1"	:				"컨텐츠 링크1" (String)
"url_link2"	:				"컨텐츠 링크2" (String)
"url_link3"	:				"컨텐츠 링크3" (String)
}


[RESPONSE]
정상 응답일 경우 : 현재 입력된 공연의 공연등록번호 리턴(ResultMethod는 JSONArray 타입). 
{"ResultCode":0, "ResultMessage":"insert_ok", ResultMethod[{"performance_seq":"3"}]}
등록 중 오류 발생 : 
{"ResultCode":-1, "ResultMessage":"해당 오류 메세별 출력.(데이터 검증 실패 등)"}

==========================================================================================================
[길거리 공연 등록2.(첨부파일 업로드)]
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/FileUpload.jsp

파일업로드는 공연 등록 후, 서버에서 리턴해주는 performance_seq사용.
multipart/form-data 데이터로 서버로 전송. 
한글 파일명은 사용불가.


[REQUEST]

"performance_seq"	:		"현재 등록하는 공연 키값<input type='hidden' name='performance_seq' value='${value}'>"
"file(n)"			:		"첨부 파일<input type="file">" n은 1 개이상을 의미. 


[RESPONSE]
정상 응답일 경우 : 
{"ResultCode":0, "ResultMessage":"insert_ok", ResultMethod[]}
파일 등록 중 오류 발생 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}


==========================================================================================================
[지도 공연 검색]

지도 공연 겁색의 구조는 다음과 같습니다. 최상위 JSONObject가 존재하며, 하위 JSONObejct를 포함하는 구조입니다.
최상위 JSONObject는 키를 north_east, south_west를 가지는 하위 JSONObject를 가집니다.

google map api에서 현 지도 축적 내 북동쪽 좌표와 남서쪽 좌표를 가지고 오는 api가 제공됩니다. 그 함수를 이용해서 좌표를
가지고 오시면 됩니다. 
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]

{
"req"				:				"GET_PERFORMANCE_FROM_MAP"(Constant)
 
"latitude"			:				"위도" (소수점 정수값)
"longitude"			:				"경도" (소수점 정수값)
}


[RESPONSE]
정상응답인 경우 :
ResultMethod의 경우는 JSONArray 타입.

{
"ResultCode":0,
"ResultMessage":"", 
"ResultMethod":
	[
		{
		"time"				:		"시간" (yyyy-MM-dd HH:MM 타입 String)
		"category"			:		"카테고리" ('music', 'performance', 'exhibition', 'others')
		"title"				:		"공연 이름"
		"performance_seq"	:		"공연등록번호"
		"longitude"			:		"위도" (소수점 정수값)
		"latitude"			:		"경도" (소수점 정수값)
		, {......}, {......}
		}
	]
}

이하 아래부터는 ResultMethod 리스트에 대해서 다음과 같이 표기합니다.  

ResultMethod[n].time				:		"시간" (yyyy-MM-dd HH:MM 타입 String)
ResultMethod[n].category			:		"카테고리" ('music', 'performance', 'exhibition', 'others')
ResultMethod[n].title				:		"공연 이름"
ResultMethod[n].performance_seq		:		"공연등록번호"
ResultMethod[n].longitude			:		"위도" (소수점 정수값)
ResultMethod[n].latitude			:		"경도" (소수점 정수값)

비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

==========================================================================================================
[공연 상세정보]

공연 상세 정보에서 이미지나 동영상 첨부 파일에 대해서는 결과값이 performance_file을 키값으로 JSONArray를 리턴합니다.

==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]

{
"req"				:			"GET_PERFORMANCE_DETAIL" (Constant)
"performance_seq"	:			"공연등록번호"
}

[RESPONSE]

정상 응답인 경우 : 
{"ResultCode":0, "ResultMessage":""}

ResultMethod[0].performance_seq			:		"공연등록번호"
ResultMethod[0].title					:		"공연 이름"
ResultMethod[0].artist 					:		"공연자"
ResultMethod[0].category 				:		"카테고리"
ResultMethod[0].latitude 				:		"위도"
ResultMethod[0].longitude 				:		"경도"
ResultMethod[0].time					:		"시간"
ResultMethod[0].content 				:		"공연 설명"
ResultMethod[0].sns_url 				:		"sns주"
ResultMethod[0].url_link1 				:		"첨부 영상 등의 주소"
ResultMethod[0].url_link2 				:		"첨부 영상 등의 주소"
ResultMethod[0].url_link3 				:		"첨부 영상 등의 주소"
ResultMethod[0].like_it					:		"좋아요 카운트"
ResultMethod[0].comment_count			:		"코멘트 카운트"
ResultMethod[0].performance_file[n]		:		[{"file_seq":"1", "file_path":"upload/1","file_name":"Penguins.jpg","file_type":"jpg"}, {...}];

비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

==========================================================================================================
[공연 리스트]

클라이언트 화면에서 페이징 구현할 때, total_count를 이용해서 (total_count / page_row_count)로 페이지를 표현.
현재 한페이지 당 5개의 검색 결과 표시.
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]
{
"req"				:				"GET_PERFORMANCE_LIST"
"keyword"			:				"검색어" (옵션사항. 키워드로 검색하지 않는 경우 입력X)
"page_no"			:				"페이지 번호"(1페이지 요청은 입력 X)
}

[RESPONSE]

정상 응답인 경우 : 
{"ResultCode":0, "ResultMessage":""}

ResultMethod[n].num						:		"검색 번호"
ResultMethod[n].performance_seq			:		"공연등록번호"
ResultMethod[n].title					:		"공연제목"
ResultMethod[n].artist					:		"공연자"
ResultMethod[n].category				:		"카테고리"
ResultMethod[n].time					:		"시작시간"
ResultMethod[n].content					:		"소개글"
ResultMethod[n].total_count				:		"총 검색 결과"


비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

==========================================================================================================
[코멘트 작성]
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]
{
"req"						:				"ADD_COMMENT"
"performance_seq"			:				"공연등록번호" 
"commmet_content"			:				"코멘트 내용"(Hex String)
"email"						:				"작성자 이메일"
}

[RESPONSE]

정상 응답인 경우 : 
{"ResultCode":0, "ResultMessage":""}

ResultMethod[n].comment_seq				:		"코멘트등록번호"
ResultMethod[n].comment_content			:		"코멘트내용"
ResultMethod[n].email					:		"이메일"


비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

==========================================================================================================
[코멘트 리스트]
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]
{
"req"						:				"GET_COMMENT_LIST"
"performance_seq"			:				"공연등록번호" 
}

[RESPONSE]

정상 응답인 경우 : 
{"ResultCode":0, "ResultMessage":""}

ResultMethod[n].comment_seq				:		"코멘트등록번호"
ResultMethod[n].comment_content			:		"코멘트내용"
ResultMethod[n].email					:		"이메일"


비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

==========================================================================================================
[가까운 핫스팟 장소 검색]
==========================================================================================================
REQUEST URL : http://gilstar.com:8080/gilstar/Performance.jsp

[REQUEST]
{
"req"						:				"GET_NEAREST_HOTSPOT"
"latitude"					:				"위도"
"longitude"					:				"경도" 
}

[RESPONSE]

정상 응답인 경우 : 
{"ResultCode":0, "ResultMessage":""}

ResultMethod[n].name						:		"핫스팟 명칭"
ResultMethod[n].latitude					:		"위도"
ResultMethod[n].longitude					:		"경도"


비정상 응답인 경우 : 
{"ResultCode":-1, "ResultMessage":"오류메세지 출력."}

</PRE>
* @author <a href="mailto:winwin5907@gmail.com">winwin5907</a>
* @since 2011.06.07
* @version 1.0.0
*/
public class GilstarAPI 
{
	
}
